package zadanie3;

import junit.framework.TestCase;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class Liczba2Test extends TestCase 
{

	@BeforeClass
	protected static void setUpBeforeClass() throws Exception 
	{
	}

	@AfterClass
	protected static void tearDownAfterClass() throws Exception 
	{
	}
	
	@Before
	protected void setUp() throws Exception 
	{
		super.setUp();
	}

	@After
	protected void tearDown() throws Exception 
	{
		super.tearDown();
	}

	@Test
	public void testLiczba2StringInt() 
	{
		try 
		{
			for (int i = 0; i < 10000; ++i)
			{
				Liczba2 objekt = new Liczba2(Integer.toString(i).toUpperCase(), 10);
				for (int podstawa = 2; podstawa < 16; ++podstawa)
				{
					assertEquals("Nie udalo sie!", objekt.zapis(podstawa), Integer.toString(i, podstawa).toUpperCase());
					if (podstawa < 11)
					{
						assertEquals("Nie udalo sie!", Long.parseLong(objekt.zapis(podstawa)), Long.parseLong(Integer.toString(i, podstawa).toUpperCase()));
						assertEquals("Nie udalo sie!", Double.parseDouble(objekt.zapis(podstawa)), Double.parseDouble(Integer.toString(i, podstawa).toUpperCase()), 1);
						assertTrue(Long.parseLong(objekt.zapis(podstawa)) == Long.parseLong(Integer.toString(i, podstawa).toUpperCase()));
						assertFalse(Long.parseLong(objekt.zapis(podstawa)) != Long.parseLong(Integer.toString(i, podstawa).toUpperCase()));
					}
				}
			}
		}
		catch (Liczba2Exception e) 
		{
			System.out.println(e.getMessage() );//wyświetl powód wyjątku
		}
	}

}
